package com.bluebridgecup.FundamentalsofDataStructures.StackAndQueue;

import java.util.Scanner;

public class SimulateQueue {
    // 定义数组的最大长度
    static int N = 100010;
    // 定义数组
    static int queue[] = new int[N];
    // 定义头指针和尾指针，初始化为0
    static int head = 0;
    static int tail = 0;

    // 判断队列是否为空的方法
    static boolean isEmpty() {
        return head == tail;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 执行n次操作
        int n = in.nextInt();

        for (int i = 1; i <= n; i++) {
            // 读取操作类型
            String op = in.next();
            // 如果操作为入队
            if (op.equals("push")) {
                // 读取入队元素
                int x = in.nextInt();
                // 将元素x入队
                queue[tail++] = x;
                //如果操作为出队
            } else if (op.equals("pop")) {
                if (isEmpty()) continue; // 如果队列为空，则就跳出本次循环
                head++;
                // 如果操作为判断队列是否为空
            } else if (op.equals("empty")) {
                if (isEmpty()) {
                    System.out.println("YES");
                } else {
                    System.out.println("NO");
                }
            } else if (op.equals("query")) {
                if (!isEmpty()) {
                    System.out.println(queue[head]);
                } else {
                    System.out.println("empty");
                }
            }
        }
    }
}
